<?php
/**
 * Created by PhpStorm.
 * User: yifeng
 * Date: 2018/3/19
 * Time: 10:33
 */

namespace app\common\controller;

use PHPMailer\PHPMailer\PHPMailer;
use think\Controller;
use think\Cookie;
class Base extends Controller
{
    public function _initialize()
    {
        parent::_initialize();
       $addonmenu=$this->getaddonsmenu();
       $this->assign('addonmenu',$addonmenu);
    }
    /**
     * @param $toemial 用户注册邮箱
     * @param string $title  激活邮件标题
     * @param $account 用户账号
     * @param $url 激活地址
     */
    public static function sendTextmail($toemial,$account,$url,$title="账号激活"){
        $mail = new PHPMailer(true);
        try {
            //Server settings
            $mail->SMTPDebug = 0;                                 // Enable verbose debug output
            $mail->isSMTP();                                      // Set mailer to use SMTP
            $mail->Host = 'smtp.163.com';  // Specify main and backup SMTP servers
            $mail->SMTPAuth = true;                               // Enable SMTP authentication
            $mail->Username = 'yfketang@163.com';                 // SMTP username
            $mail->Password = 'aa123456';                           // SMTP password
            $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
            $mail->Port = 25;                                    // TCP port to connect to
            $mail->CharSet = 'UTF-8';//邮件编码的设置
            //Recipients
            $mail->setFrom('yfketang@163.com', '易风博客');
            $mail->addAddress($toemial);               // Name is optional
            $mail->addReplyTo('yfketang@163.com', '易风课堂');

            //Content
            $mail->isHTML(true);                              // Set email format to HTML
            $mail->Subject = $title;
            $mail->Body    = "你好!<br>感谢你注册易风博客系统。 <br>你的登录用户名为：{$account}。请点击以下链接激活帐号：
<a href='{$url}' target='_blank'>{$url}</a><br>如果以上链接无法点击，请将上面的地址复制到你的浏览器(如IE)的地址栏进入易风博客系统激活账号。 （该链接在24小时内有效，24小时后需要重新注册）";

            $mail->send();

        } catch (Exception $e) {

        }
    }
    //判断登录状诚
    public static function isLogin(){
        if(!Cookie::has('name') || !Cookie::has('code')){
            return false;
        }
        // 这个salt, 一个思路, 辅助加密salt, 类似于srf防范.
        // decrypt 可逆加密, 可用php自带的hash,或者aes
        if(cookie('code') == md5(decrypt(cookie('name'),SALT).SALT)){
            session('username',decrypt(cookie('name'),SALT));
            return true;
        }
        return false;
    }
//    设置登录状态
    public static function setLogin($account,$uid){
        cookie('name', encrypt($account,SALT), 3600);
        cookie('code',md5($account.SALT),3600);
        session('uid',$uid);
        return ['code'=>1,'msg'=>"登录成功",'name'=>$account];
    }
//    文件上传
    public static function upload($file,$oldfile=null,$dir='uploads'){
        // 移动到框架应用根目录/public/uploads/ 目录下
        if($file){
            $info = $file->move(ROOT_PATH . 'public' . DS . $dir);
            if($info){
                // 成功上传后 获取上传信息
                // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                //调用"/uploads/20160820/42a79759f284b767dfcb2a0197904287.jpg"
                if($oldfile!==null){
                    //项目根目录/public/$oldfile
                    $path=ROOT_PATH.'public/'.$oldfile;
                    if(is_file($path) && file_exists($path)){
                        @unlink($path);
                    }
                }
                return ['code'=>1,'msg'=>'上传成功','path'=>$dir.DS.$info->getSaveName()];
            }else{
                // 上传失败获取错误信息
                return ['code'=>0,'msg'=>$file->getError()];
            }
        }
    }
    /**
     * 获取当前用户的所有博文分类id
     */
    protected static function getcurusercates(){
        //1.获取用户id
        $account=decrypt(cookie("name"),SALT);
        //2.通过用户名查询用户id
        $uid=db("user")->where('account',$account)->value('uid');
        //3.通过用户id获取当前用户的所属分类
        $res_cate=db('blogcate')->where('uid',$uid)->column('cid');

        return $res_cate;
    }

    /**
     * 获取已安装插件的菜单项
     * @param int $type
     * @return mixed
     */
    public function getaddonsmenu($type=0){
        $addons=get_addon_list();
        $arr=[];
        foreach ($addons as $v){
            //判断插件是否安装
            if(is_file(ADDON_PATH .$v['name'].DS.'config.php')){
                if(isset($v['menu']) && !empty($v['menu'])){
                    if($type==$v['menu']['type']){
                        $arr[]=$v['menu'];
                    }
                }
            }
        }
        return $arr;
    }
}